#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#include "constantes.h"
#include "global.h"
#include "configuracion.h"

ListConfig *listaConfig;

int cargarConfig(void)
{
  FILE *archivo;
  char input[TAMANIOCAMPO];
  char *clave;
  char *valor;
   
  listaConfig = NULL;

  if ((archivo = fopen("/home/utn_so/tp/configuracionRAID.txt", "r"))!= NULL) /*abre el archivo para lectura*/
  {
     while ((fscanf(archivo, "%s", input)) != EOF) /* leo el archivo hasta que haya un espacio y guardo el tokens en input*/
     {
    	 valor = strstr(input, "=") + 1; /* strstr() Localiza la primera aparición en la cadena input de la secuencia de caracteres (excluyendo el carácter nulo) en la cadena apuntada por "="*/
    	 clave = strtok(input, "=");   /*me devuelve el tokens qe esta antes del "="*/
	 meterEnLista(clave,valor);
     }
     fclose(archivo);
     return 0;
  }
  else
  {
  	return -1;
  }
}

void meterEnLista(char* clave,char* valor)
{
	
	ListConfig * ptr;

	ptr = (ListConfig*)malloc(sizeof(ListConfig));
	ptr->clave = (char*) malloc(sizeof(char)*strlen(clave)+1);
	ptr->valor = (char*) malloc(sizeof(char)*strlen(valor)+1);

	strcpy(ptr->clave, clave);
	strcpy(ptr->valor, valor);
	
	ptr->next = listaConfig;
	listaConfig = ptr;
}


char* obtenerValor(const char* clave)
{

	ListConfig* ptr;	
	ptr = listaConfig;
	char* bufferValor;

	while ( ptr != NULL && strcmp(ptr->clave, clave))
	{
		ptr = ptr->next;
	}
	
	if ( ptr != NULL )
	{
		bufferValor = (char*) malloc(strlen(ptr->valor));
		strcpy(bufferValor,ptr->valor);
		return bufferValor;
	}else
	{
		return NULL;
	}
	
}
